#include <iostream>

using std::cout;
using std::endl;

template <typename T1 = double, typename T2, typename T3>
T1 add(T2 x, T3 y)
{
    cout << "T1 add(T2, T3)" << endl;
    return x + y;
}

int main(int argc, char *argv[])
{
    int ia = 3;
    double db = 11.11;

    cout << "add(ia, db) = " << add<int>(ia, db) << endl;
    cout << "add(ia, db) = " << add(ia, db) << endl;
    return 0;
}

